package org.chartsy.annotation.rectangle;
import java.awt.Graphics2D;
import java.awt.Stroke;
import org.chartsy.main.ChartFrame;
import org.chartsy.main.chart.Annotation;
import org.chartsy.main.utils.SerialVersion;
import org.openide.nodes.AbstractNode;
/**
*
* @author viorel.gheba
*/
public class Rectangle
extends Annotation
{
private static final long serialVersionUID = SerialVersion.APPVERSION;
private AnnotationProperties properties;
public Rectangle()
{ super(); }
public Rectangle(ChartFrame frame)
{
super(frame);
actionSet.set(TOP);
actionSet.set(TOP_LEFT);
actionSet.set(TOP_RIGHT);
actionSet.set(LEFT);
actionSet.set(RIGHT);
actionSet.set(BOTTOM);
actionSet.set(BOTTOM_LEFT);
actionSet.set(BOTTOM_RIGHT);
properties = new AnnotationProperties();
}
public @Override String getName()
{ return "Rectangle"; }
public Annotation newInstance(ChartFrame frame)
{ return new Rectangle(frame); }
public boolean pointIntersects(double x, double y) {
if (getActionPoint(x, y) != NONE)
return true;
double X1 = getXFromTime(getT1()), X2 = getXFromTime(getT2());
double Y1 = getYFromValue(getV1()), Y2 = getYFromValue(getV2());
java.awt.Rectangle r = new java.awt.Rectangle();
r.setFrameFromDiagonal(X1, Y1, X2, Y2);
return r.contains(x, y);
}
public void paint(Graphics2D g)
{
Stroke old = g.getStroke();
double X1 = getXFromTime(getT1()), X2 = getXFromTime(getT2());
double Y1 = getYFromValue(getV1()), Y2 = getYFromValue(getV2());
java.awt.Rectangle r = new java.awt.Rectangle();
r.setFrameFromDiagonal(X1, Y1, X2, Y2);
if (properties.getInsideVisibility())
{
g.setPaint(properties.getFillColor());
g.fill(r);
}
g.setPaint(properties.getColor());
g.setStroke(properties.getStroke());
g.draw(r);
g.setStroke(old);
if (isSelected())
paintActionPoints(g);
}
public AbstractNode getNode()
{ return new AnnotationNode(properties); }
}